package bean;

import javax.persistence.Entity;
import javax.persistence.Table;

import bean.vo.RodamientoVO;

@Entity 
@Table( name = "rodamientos" )
public class Rodamiento extends EntidadPersistente{
	private String codigo;
	private String sufijo;
	private String descripcion;
	
	public Rodamiento () {
		this.sufijo = "";
	}
	
	public Rodamiento (String codigo, String sufijo) throws Exception{
		this();
		
		if (codigo == null || codigo.equalsIgnoreCase("")) {
			throw new Exception("ERROR - Codigo es requerido.");
		}
		this.codigo = codigo;
		this.sufijo = sufijo == null ? "" : sufijo;
	}
	
	public Rodamiento (String codigo, String sufijo, String descripcion) throws Exception{
		this(codigo, sufijo);
		this.descripcion = descripcion;
	}
	
	public RodamientoVO getVO() {
		RodamientoVO vo = new RodamientoVO();
		vo.setCodigo(codigo);
		vo.setDescripcion(descripcion);
		vo.setSufijo(sufijo);
		
		return vo;
	}
	
	public String getCodigo() {
		return codigo;
	}
	
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	
	public String getSufijo() {
		return sufijo;
	}
	
	public void setSufijo(String sufijo) {
		this.sufijo = sufijo == null ? "" : sufijo;
	}
	
	public String getDescripcion() {
		return descripcion;
	}
	
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	
	@Override
	public int hashCode() {
		final int primo = 31;
		int result = 1;
		result = primo * (result + (codigo == null  ? 0 : codigo.hashCode()) + (sufijo == null  ? 0 : sufijo.hashCode()));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) return true;	
		if ((obj == null) || (!(obj instanceof Rodamiento))) {
			return false;
		}
		Rodamiento otro = (Rodamiento) obj;
		boolean mismoNombre = (codigo!=null && otro.codigo != null ? (codigo.equals(otro.codigo)) : false);
		boolean mismoSufijo = (sufijo == null && otro.sufijo == null) || (sufijo!=null && otro.sufijo != null ? (sufijo.equals(otro.sufijo)) : false);
		return mismoNombre && mismoSufijo;
	}
}
